#ifndef __STRATEGY__H__
#define __STRATEGY__H__

class weaponbehavior
{
	public:
		virtual void useweap() = 0;
		virtual ~weaponbehavior(){};
};

class arrow:public weaponbehavior
{
	public:
		void useweap();
};

class sword:public weaponbehavior
{
	public:
		void useweap();
};

class knife:public weaponbehavior
{
	public:
		void useweap();
};

class axe:public weaponbehavior
{
	public:
		void useweap();
};

class character
{
	public:
		character():weapon(0){};
		virtual ~character(){};
		void setweapon(weaponbehavior *wb)
		{
			this->weapon = wb;
		}
		virtual void fight() = 0;
	protected:
		weaponbehavior *weapon;
};

class king:public character
{
	public:
		void fight();
};

class queen:public character
{
	public:
		void fight();
};

class knight:public character
{
	public:
		void fight();
};

class troll:public character
{
	public:
		void fight();
};

#endif

